#ifndef _WVALUE_H
#define _WVALUE_H

/******************************************************************************
** @file	WValue.h
** @author	Marco Galvez 
** @date	Jul 25, 2010
**
** @desc	This class represents a value of a registry
*			
**
******************************************************************************/

#include <string>
#include "WConstants.h"

class WValue
{
public:
	
	/*
	* Constructor of the clas it required the name and the type of the value
	* @param name, a wstring that represent the name of the value
	* @param type, a wstring that reprenst the type of the value
	*/
    WValue(std::wstring name,std::wstring type);
	
	/*
	* Copy constructor necesary to receive and create new WValueObjects
	* @param value, a WValue this will provice the data that will be copied
	*/
    WValue(const WValue & value);

	/*
	* Default Constructor it sets the name to "Default" and Type to "REG_SZ" 
	*/
	WValue();

	/*
	* getName method returns the name of the value
	* @return wstring with the name of the value
	*/
    std::wstring 
	getName()
    {
        return _name;
    }

	/*
	* getType method returns the type of the value
	* @return the type fo the value
	*/
    std::wstring 
	getType()
    {
        return _type;
    }
     
	/*
	* setName method sets a new name to the value
	* @param name, wstring with the new name
	*/
    void 
	setName(std::wstring name)
    {
		_name = name;
    }

	/*
	* setType method sets the type of the value
	* @param type, a wstring with the new type
	*/
    void 
	setType(std::wstring type)
    {
		_type = type;
    }

	/*
	* Destructor
	*/
    ~WValue();

private:
    std::wstring _name;
    std::wstring _type;
    
};

#endif